package com.zs.exceptionhandler;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class GlobalExceptionHandler {
    /*
    * 类： 手机整个项目的异常  handler： 处理对应的细化异常
    * 除零异常 + 空指针 => GlobalExceptionHandler => nullExceptionHandler -> 空指针异常 || byZeroException -> 除零异常
    * 解析： 异常处理的handler就是替代报错的handler的执行结果! 也是正返回jsp | 转发重定向 | json
    * 1. 创建一个全局议程处理类
    * 2. 类上添加@ControllerAdvice || @RestControllerAdvice
    * 3 定义具体的异常处理handler
    *    3.1 返回值由你定，最终会返回给前端（jsp|转发|json）
    *    3.2 handler方法需要添加@ExceptionHandler(异常类型.class)
    *    3.3 handler(异常类型e) 你本次报错的异常对象，可以获取异常信息
    * 4. 异常处理类必须加到ioc容器中
    * */
    @ExceptionHandler(NullPointerException.class)
    public String nullExceptionHandler(){
        System.out.println("*****NullPointerException*****");
        return "NullPointerException";
    }

    @ExceptionHandler(Exception.class)
    public String byZeroException(Exception e){
        System.out.println("+++++Exception++++");
        e.printStackTrace();
        return "Exception";
    }

}
